package gestionCandidats;

import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.JOptionPane;

import modele.Fiche;

public class FicheSuiteAction extends AbstractAction {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	GestionCandidats appli;
	DossierAfficheAction doaa;
	DemandeAfficheAction deaa;
	FicheAfficheAction faa = null;

	Integer[] parcours;
	int indiceParcours = 0;

	protected FicheSuiteAction(GestionCandidats appli,
			DossierAfficheAction doaa,
			DemandeAfficheAction deaa) 
	throws Exception {
		super("FicheSuiteAction");	
		this.appli = appli;
		this.doaa = doaa;
		this.deaa = deaa;
	}	

	public int getIndiceParcours() throws Exception {
		return indiceParcours;
	}

	public void setIndiceParcours(int ind) throws Exception {
		indiceParcours = ind;
	}

	public Fiche getFiche() throws Exception {
		Fiche fic = deaa.getDossier().getDemande().
		getFiche(parcours[indiceParcours],indiceParcours);
		indiceParcours++;
		return fic;
	}

	public void actionPerformed(ActionEvent e) {
		try {
			parcours = deaa.getParcoursIdent();
			if (parcours.length == 0){ // aucun parcours demande
				// on efface la fenetre Demande
				deaa.getVue().setVisible(false);
				// on enregistre le dossier
				deaa.getDossier().record(0);
				// on revient a la vue globale des dossiers
				doaa.actionPerformed(e);
			}
			else { // au moins un parcours
				if (faa == null) {
					// on efface la fenetre Demande
					deaa.getVue().setVisible(false);
					// on cree la fenetre Fiche
					faa = new FicheAfficheAction(appli, doaa, deaa, this);
					// le premier parcours
					faa.actionPerformed(e);
				}
				else {
					if (indiceParcours < parcours.length) {
						// on efface la fenetre Demande
						deaa.getVue().setVisible(false);
						// on enregistre le precedent
						faa.getFiche().record(faa.getUesIdent());
						faa.getFiche().
						setAbsente(new Boolean(faa.getAbsente()));
						// on efface la fenetre Fiche precedente
						faa.getVue().setVisible(false);
						// le suivant
						faa.actionPerformed(e);
					}
					else {
						// on enregistre le dernier
						faa.getFiche().record(faa.getUesIdent());
						faa.getFiche().
						setAbsente(new Boolean(faa.getAbsente()));
						// on enregistre le dossier
						deaa.getDossier().record(indiceParcours);
						// on efface la fenetre Fiche precedente
						faa.getVue().setVisible(false);
						// on revient a la vue globale des dossiers
						doaa.actionPerformed(e);
					}
				}
			}
		}
		catch(Exception ex){
			JOptionPane.showMessageDialog(appli, ex.getMessage(), "Fiche suite : Attention",JOptionPane.ERROR_MESSAGE);
			ex.printStackTrace();
		}
	}
}
